package Classic;

import java.util.ArrayList;
import java.util.List;

/*
枚举排列
使用递归，并且需要共享一个数组
 */
public class Demo002 {
    public static void run(){
        //当数字位数不确定时,使用递归代码更简洁
        int[] arr=new int [4];
        meiju(4,arr,0);
    }

    public static void meiju(int n, int[] arr,int index){
        //终止条件:数组已经填满N个数字
        if(index==n){
            for (int i:arr
                 ) {
                System.out.print(i);
            }
            System.out.println();

        }
        else {
            //递归,往数组 arr 的第index位塞数据
            for(int j=1;j<=n;j++){
                int k=index-1;
                int flag=0;
                while (k>=0){
                    if(arr[k]==j) {
                        flag = 1;
                        break;
                    }
                    k--;
                }
                if(flag==1)
                    continue;
                arr[index]=j;
                meiju(n,arr,index+1);
            }
        }

    }
}
